<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Module (programmation)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Module_(programmation)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Module_programmation rootpage-Module_programmation skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Module (programmation)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>Un <b>module</b> désigne originellement un fichier de code de programmation ou un fichier de <a href="Biblioth%C3%A8que_(informatique)" class="mw-redirect" title="Bibliothèque (informatique)">bibliothèque</a> statique ou dynamique.
</p><p>Pour reprendre l'image de la programmation objet, un module est une instance unique qui n'utilise pas d'héritage et ne contient aucun module fils. Chaque module peut exporter ou importer certains symboles comme des variables, des fonctions ou des classes. Les modules peuvent se regrouper en <a href="Package" class="mw-redirect mw-disambig" title="Package">package</a> (espace de noms) éventuellement hiérarchique.
</p><p>Dans l'histoire de la programmation, la <a href="Programmation_modulaire" title="Programmation modulaire">programmation modulaire</a> succède à la <a href="Programmation_proc%C3%A9durale" title="Programmation procédurale">programmation procédurale</a> et donnera naissance à la <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">programmation orientée objet</a>.
</p><p>Quand on parle de programmation modulaire on parle du <a href="C_(langage)" title="C (langage)">C</a> qui a utilisé, en premier lieu, ce principe pour scinder la compilation de projet. Dans ce cas, un module est identifié par un fichier de déclaration (en-têtes ou prototypes) et un fichier de description (définition ou code). On n'est plus obligé de recompiler l'ensemble d'un programme lorsque seuls quelques modules sont modifiés. Les fonctions et variables déclarées dans le fichier de déclaration sont publiques et peuvent être utilisées par n'importe quel autre module, il s'agit de l'interface du module<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>. Les fonctions et variables déclarées dans le fichier de description sont privées et ne peuvent être utilisées que par ce module particulier.
</p><p>En <a href="Java_(langage)" title="Java (langage)">Java</a>, on n'utilise généralement pas le terme de module, mais certains compilateurs permettent de déclarer plusieurs classes successives (sans imbrication) dans un même fichier. On peut alors considérer un fichier de code Java comme un module contenant un ensemble de classes.
</p><p>En <a href="Python_(langage)" title="Python (langage)">Python</a>, chaque fichier peut être considéré comme un module à partir du moment où le fichier l'important se trouve dans le même répertoire que le module, autrement il sera impossible de l'importer.
</p><p>Les langages <a href="Modula" class="mw-redirect" title="Modula">Modula</a> et <a href="Ada_(langage)" title="Ada (langage)">Ada</a> sont typiquement modulaires avec des instructions pour la gestion des modules. Le langage C/C++ est modulaire mais les instructions pour la gestion des modules se retrouvent dans un langage de prétraitement (dédié au préprocesseur). Le langage <a href="Objective_Caml" class="mw-redirect" title="Objective Caml">Objective Caml</a>, qui repose essentiellement sur la programmation <a href="Programmation_fonctionnelle" title="Programmation fonctionnelle">fonctionnelle</a> et <a href="Programmation_modulaire" title="Programmation modulaire">modulaire</a>, propose un système de modules récursifs et paramétrables très puissant qui permet de fournir une grande <a href="G%C3%A9n%C3%A9ricit%C3%A9" title="Généricité">généricité</a> au code.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="https://books.google.fr/books?id=shYNoNY9lxwC&pg=PA28&dq=Module+(programmation)&hl=fr&sa=X&ved=2ahUKEwit_sKypoLuAhXBBWMBHdkNA3wQ6AEwAnoECAUQAg#v=onepage&q=Module%20(programmation)&f=false"><i>La programmation objet en Java: Cours et exercices corrigés</i></a>, Michel Divay, Dunod, 2006</span>
</li>
</ol></div>
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2021-08-03" href="https://fr.wikipedia.org/wiki/?title=Module_(programmation)&oldid=185175140">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>